package com.eastfair.venuebooking.vo;

import com.eastfair.annotation.annotation.dictionary.DictionaryField;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 报价书详情 VO.
 *
 * @author dqq
 * @date 2022 /6/21
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Accessors(chain = true)
public class QuotationDetailVO implements Serializable {

    private Map<String, Object> echoMap = new HashMap<>();

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Long id;

    /**
     * 报价书id
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Long quotitionId;

    /**
     * 展厅id
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Long spaceId;

    /**
     * 展厅名称
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String spaceName;

    /**
     * 单价
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private BigDecimal price;

    /**
     * 计价面积
     */
    @DictionaryField(type = "PRICE_CONFIG")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String priceArea;

    /**
     * 计价时长
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private BigDecimal priceDuration;

    /**
     * 计价单位
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String priceUnit;

    /**
     * 展厅确定时长
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Integer ascertainTime;

    /**
     * 折扣前总价
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private BigDecimal amount;

    /**
     * 折扣后总价
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String discountAmount;

    /**
     * 折扣
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Integer discountPercent;

    /**
     * 场地保证金
     */
    @ApiModelProperty(value = "场地保证金")
    private BigDecimal spaceDeposit;

    /**
     * 服务预付款
     */
    @ApiModelProperty(value = "服务预付款")
    private BigDecimal serviceAdvanceCharge;

    /**
     * 场地计价单位与单价列表
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<SpacePriceUnitVO> spacePriceUnitList;
}
